package br.com.damazzy.autenticacao {
	
	import br.com.damazzy.util.StringUtils;
	import br.com.damazzy.util.TratamentoErros;
	import br.com.damazzy.vo.UsuarioVO;
	
	import flash.events.MouseEvent;
	
	import mx.collections.ArrayCollection;
	import mx.controls.Alert;
	import mx.events.FlexEvent;
	import mx.managers.PopUpManager;
	import mx.rpc.events.FaultEvent;
	import mx.rpc.events.ResultEvent;
	
	public class Autenticacao extends AutenticacaoView {
		
		private var _telaPai: Damazzy;
		private var _vo: UsuarioVO;
		
		public function Autenticacao() {
			super();
			
			include '../util/RegistroVOs.as';
			
			this.addEventListener(FlexEvent.CREATION_COMPLETE, init);
		}
		
		private function init(event: FlexEvent): void {
			
			this.btnAcessar.addEventListener(MouseEvent.CLICK, acessar);
			
			rm.autenticar.addEventListener(ResultEvent.RESULT, resultAcessar);
			rm.autenticar.addEventListener(FaultEvent.FAULT, TratamentoErros.fault);
			
			limparDados();
		}
		
		private function acessar(event: MouseEvent): void {
			
			if (validarDados()) {
				var vo: UsuarioVO = new UsuarioVO();
				vo.login = StringUtils.trim(txtUsuario.text);
				vo.senha = StringUtils.trim(txtSenha.text);
				
				rm.autenticar(vo);
			}
		}
		
		private function alterarSenha(event: MouseEvent): void {
			var alterarSenha: AlterarSenha = new AlterarSenha();
			alterarSenha.idUsuario = _vo.idUsuario;
			PopUpManager.addPopUp(alterarSenha, _telaPai, true);
			PopUpManager.centerPopUp(alterarSenha);
		}
		
		private function resultAcessar(event: ResultEvent): void {
			
			_vo = event.result.dados.vo;
			
			if (_vo.usuarioAutenticado) {
				
				_telaPai.carregarAplicacao();
				
				this.currentState = "usuarioAutenticado";
				txtNomeUsuario.text = _vo.nomePessoa;
				
				btnSair.addEventListener(MouseEvent.CLICK, sair);
				btnAlterarSenha.addEventListener(MouseEvent.CLICK, alterarSenha);
				
			} else {
				Alert.show("Usuário e/ou senha inválidos.", "Erro!");
				limparDados();
			}
		}
		
		private function sair(event: MouseEvent): void {
			this.currentState = "";
			limparDados();
			_telaPai.carregarSite();
		}
		
		private function validarDados(): Boolean {
			
			var camposOk: Boolean = true;
			var msg: String = "O campo ";
			
			if (StringUtils.trim(txtUsuario.text) == "") {
				msg += "Usuário é de preenchimento obrigatório.";
				camposOk = false;
				
			} else if (StringUtils.trim(txtSenha.text) == "") {
				msg += "Senha é de preenchimento obrigatório.";
				camposOk = false;
			}
			
			if (!camposOk) {
				Alert.show(msg, "Erro!");	
			}
			
			return camposOk;
		}
		
		private function limparDados(): void {
			txtUsuario.actualText = "THIAGO";
			txtSenha.actualText = "11111111";
		}
		
		public function set telaPai(pai: Damazzy): void {
			_telaPai = pai;
		}
		
		public function get vo(): UsuarioVO {
			return _vo;
		}
	}
}